cookie 是当前识别用户,实现持久会话的最好方式。可以分为两类:会话 cookie 和持久 cookie,它们的区别是它们过期的时间。会话 cookie 为临时 cookie,而持久 cookie 生存时间更长,存储在硬盘上,用于某个用户周期性访问的站点配置文件或登录名。

  • 客户端的状态。cookie 的基本思想就是让浏览器积累一组服务器特有的信息,每次访问服务器时都将这些信息提供给它。
  • cookie 文件包含:domain、allh、path、secure、expiration、name、value
  • cookie 与缓存。如果无法缓存文档,要将其标识出来;缓存 Set - Cookie 首部时要小心;小心处理带有 cookie 首部的请求
  • cookie 安全性和隐私

2. 基本认证与摘要认证

质询/响应认证框架

2.1 基本认证
  • 使用Base-64 用户名/密码编码
  • 安全缺陷。Base-64 容易被反编码、容易被修改内容、假冒服务器容易骗过认证
  • 配合 SSL 使用。
2.2 摘要认证

摘要认证试图修改基本认证协议的严重缺陷。

  • 永远不会以明文方式在网络上发送密码
  • 可以防止恶意用户捕获并重放认证的握手过程
  • 有选择的防止报文内容被修改
  • 防范常见的攻击方式

摘要认证的核心就是对公共信息、保密信息和有时限的随机值这个组合的单向摘要。

2.3 问题
  • 多重质询
  • 差错处理
  • 保护空间

3. 安全 HTTP

  • https 相对于 http 多了SSL or TSL 层
  • 数字加密
  • 对称密钥加密技术。发送端和接收端共享相同的密钥

  • 公开密钥非对称加密。编码密钥是共享密钥,而解密密钥只有主机才知道。
  • 数字签名。可以证明是作者编写了这条报文;可以防止报文被篡改
  • 数字证明

4. 实体与编码

4.1 实体主体

实体主体中就是原始数据。首部字段以一个空白的 CRLF (0a)行结束,随后就是实体主体的原始内容。

实体编码,可以变得更安全或节省空间,Content-Length 为编码后的长度。

4.2 实体摘要

为检测实体主体数据是否被修改,发送方使用 Content-MD5 与主体数据生成一个校验和,接收方通过检查这个校验和来捕获所有实体是否被修改。

4.3 内容编码

  • Accept-Encoding 首部用于指定解码方式,避免服务器使用客户端不支持的编码方式。

  • Transfer-Encoding 告知接收方为了可靠地传输报文,已经对其进行了何种编码。

  • TE 用在请求首部中,告知服务器可以使用哪些传输编码扩展。

  • 分块编码是报文属性,而不是主体的属性。

  • 差异编码。If-None-Match 接收差异

5 Web 主机托管

  • 通过IP地址进行虚拟主机托管。

    优点:能比较好区分不同的目标网站

    缺点:IP 地址资源有限

  • 通过 host 首部进行虚拟主机托管。避免过度的地址消耗和虚拟IP地址的限制

    语法:Host = “Host” “:” host[“:”port]

    例子:

  • 镜像的服务器集群。是一排配置相同的 Web 服务器,可以相互替换。HTTP 重定向;DNS 重定向。

6 重定向和负载均衡

重定向:可靠的执行 HTTP 事务、最小化时延、节约网络带宽。

目标是尽快地将 HTTP 报文发送到可用的 Web 服务器上去。

  • 通用的重定向方法:

  • 代理与缓存的重定向方法